package com.gxa.customer.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gxa.common.pojo.AppUser;
import com.gxa.common.pojo.Country;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public interface AppUserMapper extends BaseMapper<AppUser> {


    /**
     * 查询总条数
     * @return
     */
    public Integer selectCounts();


    /**
     * 查询数据
     * @param begin
     * @param pageSize 每页显示的数量
     * @return
     */
    public List<AppUser> selectData(@Param("begin") Integer begin, @Param("pageSize") Integer pageSize);


    /**
     * 通过电话号码查询用户信息
     * @param phone 电话号码
     * @return
     */
    public AppUser selectUserByPhone(String phone);


    /**
     * 通过用户昵称查询用户信息
     * @param userNickName 用户昵称
     * @return
     */
    public AppUser selectUserByNickName(String userNickName);


    /**
     * 添加用户的方法
     * @param phone
     */
    public void insertUser(@Param("phone") String phone, @Param("registerTime") String registerTime);


    /**
     * 通过一些条件查询总条数
     * @return
     */
    public Integer selectCountsByItems(@Param("phone") String phone, @Param("userNickName") String userNickName);


    /**
     * 通过一些条件查询用户信息
     * @param begin
     * @param pageSize
     * @param phone
     * @param userNickName
     * @return
     */
    public List<AppUser> selectDataByItems(@Param("begin") Integer begin, @Param("pageSize") Integer pageSize, @Param("phone") String phone, @Param("userNickName") String userNickName);


    /**
     * 通过用户id修改用户状态的方法
     * @param id
     */
    public void updateStatus(Long id);


    /**
     * 通过id查询用户信息
     * @param id 用户id
     * @return
     */
    public AppUser selectUserById(Long id);


    /**
     * 更改账户信息的方法
     * @param appUser 用户对象
     */
    public void updateUser(AppUser appUser);


    /**
     * 查询所有国家的方法
     * @return
     */
    public List<Country> selectAllCountry();

    /**
     * 查看用户收藏的商海信息
     * @param appUserId
     * @return
     */
    List<Map<String,Object>> findUserCollectionMerchant(Long appUserId);

    /**
     * 电话号码注册
     * @param phone
     * @return
     */
    int registerByPhone(String phone);

    /**
     * 通过手机号查询出该用户的信息返回给前端
     * @param phone
     * @return
     */
    Map<String,Object> findUserInfoByPhone(String phone);
}
